草庐IT

Android PlusOneButton 不初始化

全部标签

c++ - 值初始化 vs Calloc vs 手动初始化速度

哪个最快?我尝试用这个基本容量测试三种方法的速度:#include"stdafx.h"#include"stdlib.h"#include"stdio.h"#include"time.h"int_tmain(intargc,_TCHAR*argv[]){constunsignedlonglongARR_SIZ=0x4fffffff;clock_tval_init_dur,calloc_dur,manual_dur;clock_tcur=clock();char*val_init=newchar[ARR_SIZ]();clock_tafter=clock();val_init_dur=a

c++ - 类对象的 vector 是如何初始化的

下面的代码有一个Screen类。含成员:光标位置、屏幕宽度、屏幕高度和屏幕内容。它有另一个类Window_mgr,其中列表是屏幕的集合。每个屏幕在vector中都有一个特定的位置。我会用箭头标出代码中的行,这样你就不需要浏览完整的代码了。我的问题是,当我们列出初始化vector(假设为int)时,我们只需通过以下方式做到这一点:std::vectorivec{1,2,3,4};但在下面的代码中,我正在初始化对象类型Screen的vector。这是什么意思:VECTORscreens=VECTOR{{Screen(24,80,''),Screen(32,56,'r')}};我只是在谈论列

c++ - 在 C++ 中初始化静态 std::map<int, unique_ptr<int>>

这是一个与此post类似的问题.我认为最有前途的答案与模板化静态初始化有关。这是该答案的类(class):templateclasscreate_map{private:std::mapm_map;public:create_map(constT&key,constU&val){m_map[key]=val;}create_map&operator()(constT&key,constU&val){m_map[key]=val;return*this;}operatorstd::map(){returnm_map;}};用法:std::mapmymap=create_map(1,2)(

c++ - 如果需要清零数组,用一对大括号初始化 std::array 是否正确?

我想知道这个结构是否:std::arrayarray{};等同于:std::arrayarray{{}};好吧,它们都可以编译并且都给出相同的结果:for(autoe:array){std::cout输出:0,0,0,0,0,0,0,0,0,0,我知道要通过选定值初始化std::array我必须使用双大括号,因为聚合初始化。但我不知道它在单括号中的表现如何。所以,问题是:在C++11中用单个大括号初始化结构是否完全正确?(这意味着结构的所有字段都将被清零)编辑:正如@dyp指出的那样,我在帖子中的问题更为笼统。假设我的问题是关于只有微不足道元素的结构。 最佳

c++ - 存储类初始化的模板

我想知道如何存储我的模板,我写一个例子:classcDebugInfo{private:DWORD*address;stringname;templateType;public:TypeGetFormattedValue(){return*(Type*)address;}cDebugInfo(){}templatecDebugInfo(DWORDAddress,stringName){address=Address;name=Name;Type=T;}};我的目标是能够向我的数组中添加一个项目:std::vectorDebugItems;templatevoidAddItem(std:

具有复杂结构的 C++ 初始化列表

我正在修改此C代码以与G++编译器一起使用,但我被困在这个相当复杂的结构上。G++编译器提示“抱歉,未实现:不支持非平凡的指定初始值设定项”。我知道一个涉及编写构造函数的解决方案,但对构造函数的调用将是巨大的并且太困惑了。是否有某种方法可以简化它并折射它,以便它更具可读性和g++兼容。staticconststruct{struct{__le32magic;__le32length;#ifndefUSE_DEPRECATED_DESC_HEAD__le32flags;#endif__le32fs_count;__le32hs_count;}__attribute__((packed))

c++ - 当参数是初始化列表且参数是引用时的重载解析

structA{A(int);};structB{explicitB(A);B(constB&);};Bb({0});我问了一个问题Overloadresolutiongetsdifferentresultbetweengccandclang和@JohannesSchaub-litb解释了活跃的规则。但是我对13.3.3.1.4Referencebinding还有一些疑问。N452713.3.3.1.5[over.ics.list]p1和p81Whenanargumentisaninitializerlist(8.5.4),itisnotanexpressionandspecialru

C++ - 如何反复重新初始化对象?

我正在尝试用C++实现这个逻辑:Objectobj(args);while(obj.isOK()){obj=obj.next();}但我不能使用这个确切的代码,因为Object继承了boost::noncopyable所以它没有赋值运算符。我可以向Object添加方法和构造函数(但不能使其可复制),但我不想这样做。其他问题有手动销毁和放置new作为解决方案,如果我为Object创建一个新的构造函数,我可以这样做,但同样,最好我不需要新的构造函数,这看起来像无论如何,这是非常讨厌的解决方案。我有什么选择? 最佳答案 使Object::

数组的 C++ 构造函数初始值设定项

我正在使用C++11,我想在构造函数的初始化列表中初始化一个对象数组。我找到了一个相关的问题,但它不符合我的需求:我希望数组对象的类是不可复制的。我希望数组对象的类有一个析构函数。编译:classfoo{public:foo(int&n):i(n){}//~foo(){}//Ifuncommented,itdoesn'tcompile.private:int&i;//Disablecopyconstructorandassignmentoperator.foo(constfoo&)=delete;foo&operator=(constfoo&)=delete;};classbar{pu

c++ - "Naked function cannot contain objects that would require unwinding..."静态初始化变量

我在使用VisualStudio15编译某些东西时遇到了问题。这段代码说明了这一点:constchar*getx(){return"foo";}void__declspec(naked)nf(){staticconstchar*x=getx();}失败并出现以下错误:错误C3068“nf”:“裸”函数不能包含在发生C++异常时需要展开的对象。不过,我真的不明白为什么会失败;静态对象不是自动的,就存储而言,它们的行为或多或少像全局对象,并且在执行入口点之前被初始化(据我所知)。如果是这样,那么这条消息指的是什么展开?此时堆栈上没有任何内容,所以没有什么可以放松的。此外,如果我删除函数调用